<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.5: http://docutils.sourceforge.net/" />
<title>shUnit2 2.1.x README</title>
<style type="text/css">

/*
:Author: David Goodger
:Contact: goodger@users.sourceforge.net
:Date: $Date: 2007-04-11 11:48:16 +0100 (Wed, 11 Apr 2007) $
:Revision: $Revision: 2791 $
:Copyright: This stylesheet has been placed in the public domain.
:Modified by: Kate Ward <kate.ward@forestent.com>

Default cascading style sheet for the HTML output of Docutils.

See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/

/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
  border: 0 }

table.borderless td, table.borderless th {
  /* Override padding for "table.docutils td" with "! important".
     The right padding separates the table cells. */
  padding: 0 0.5em 0 0 ! important }

.first {
  /* Override more specific margin styles with "! important". */
  margin-top: 0 ! important }

.last, .with-subtitle {
  margin-bottom: 0 ! important }

.hidden {
  display: none }

a.toc-backref {
  text-decoration: none ;
  color: black }

blockquote.epigraph {
  margin: 2em 5em ; }

dl.docutils dd {
  margin-bottom: 0.5em }

/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
  font-weight: bold }
*/

div.abstract {
  margin: 2em 5em }

div.abstract p.topic-title {
  font-weight: bold ;
  text-align: center }

div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
  margin: 2em ;
  border: medium outset ;
  padding: 1em }

div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
  font-weight: bold ;
  font-family: sans-serif }

div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title {
  color: red ;
  font-weight: bold ;
  font-family: sans-serif }

/* Uncomment (and remove this text!) to get reduced vertical space in
   compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
  margin-bottom: 0.5em }

div.compound .compound-last, div.compound .compound-middle {
  margin-top: 0.5em }
*/

div.dedication {
  margin: 2em 5em ;
  text-align: center ;
  font-style: italic }

div.dedication p.topic-title {
  font-weight: bold ;
  font-style: normal }

div.figure {
  margin-left: 2em ;
  margin-right: 2em }

div.footer, div.header {
  clear: both;
  font-size: smaller }

div.line-block {
  display: block ;
  margin-top: 1em ;
  margin-bottom: 1em }

div.line-block div.line-block {
  margin-top: 0 ;
  margin-bottom: 0 ;
  margin-left: 1.5em }

div.sidebar {
  margin-left: 1em ;
  border: medium outset ;
  padding: 1em ;
  background-color: #ffffee ;
  width: 40% ;
  float: right ;
  clear: right }

div.sidebar p.rubric {
  font-family: sans-serif ;
  font-size: medium }

div.system-messages {
  margin: 5em }

div.system-messages h1 {
  color: red }

div.system-message {
  border: medium outset ;
  padding: 1em }

div.system-message p.system-message-title {
  color: red ;
  font-weight: bold }

div.topic {
  margin: 2em }

h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
  margin-top: 0.4em }

h1.title {
  text-align: center }

h2.subtitle {
  text-align: center }

hr.docutils {
  width: 75% }

img.align-left {
  clear: left }

img.align-right {
  clear: right }

ol.simple, ul.simple {
  margin-bottom: 1em }

ol.arabic {
  list-style: decimal }

ol.loweralpha {
  list-style: lower-alpha }

ol.upperalpha {
  list-style: upper-alpha }

ol.lowerroman {
  list-style: lower-roman }

ol.upperroman {
  list-style: upper-roman }

p.attribution {
  text-align: right ;
  margin-left: 50% }

p.caption {
  font-style: italic }

p.credits {
  font-style: italic ;
  font-size: smaller }

p.label {
  white-space: nowrap }

p.rubric {
  font-weight: bold ;
  font-size: larger ;
  color: maroon ;
  text-align: center }

p.sidebar-title {
  font-family: sans-serif ;
  font-weight: bold ;
  font-size: larger }

p.sidebar-subtitle {
  font-family: sans-serif ;
  font-weight: bold }

p.topic-title {
  font-weight: bold }

pre.address {
  margin-bottom: 0 ;
  margin-top: 0 ;
  font-family: serif ;
  font-size: 100% }

pre.literal-block, pre.doctest-block {
  margin-left: 2em ;
  margin-right: 2em ;
  background-color: #eeeeee }

span.classifier {
  font-family: sans-serif ;
  font-style: oblique }

span.classifier-delimiter {
  font-family: sans-serif ;
  font-weight: bold }

span.interpreted {
  font-family: sans-serif }

span.option {
  white-space: nowrap }

span.pre {
  white-space: pre }

span.problematic {
  color: red }

span.section-subtitle {
  /* font-size relative to parent (h1..h6 element) */
  font-size: 80% }

table.citation {
  border-left: solid 1px gray;
  margin-left: 1px }

table.docinfo {
  margin: 2em 4em }

/*
table.docutils {
  margin-top: 0.5em ;
  margin-bottom: 0.5em }
*/

table.footnote {
  border-left: solid 1px black;
  margin-left: 1px ;
  font-size: 80% }
  }

table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
  padding-left: 0.5em ;
  padding-right: 0.5em ;
  vertical-align: top }

table.docutils th.field-name, table.docinfo th.docinfo-name {
  font-weight: bold ;
  text-align: left ;
  white-space: nowrap ;
  padding-left: 0 }

h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
  font-size: 100% }

/*
tt.docutils {
  background-color: #eeeeee }
*/

ul.auto-toc {
  list-style-type: none }

/* customizations by kward */

h1 { font-size: 133%; border-top:1px solid #CCCCFF; }
h1.title { font-size: 150%; border-top:0px; padding-top: 1em; }
/* div.document { font-size: 90% } */

</style>
</head>
<body>
<div class="document" id="shunit2-2-1-x-readme">
<h1 class="title">shUnit2 2.1.x README</h1>

<div class="section" id="code-google-com">
<h1>code.google.com</h1>
<p>This project is stored on code.google.com as <a class="reference external" href="http://code.google.com/p/shunit2/">http://code.google.com/p/shunit2/</a>.
All releases as of 2.1.4 and full source are available there. Documentation is
included as part of the source and each release. Source code is stored in
Subversion and can be accessed using the following information.</p>
<p>Browse the code in a web browser:</p>
<ul class="simple">
<li><a class="reference external" href="http://code.google.com/p/shunit2/source/browse">http://code.google.com/p/shunit2/source/browse</a></li>
<li>svn &gt; trunk &gt; source &gt; 2.1</li>
</ul>
<p>Check out the code locally</p>
<pre class="literal-block">
$ svn checkout http://shunit2.googlecode.com/svn/trunk/ shflags-read-only
</pre>
</div>
<div class="section" id="sourceforge">
<h1>SourceForge</h1>
<p>DEPRECATED</p>
<p>This project is stored on SourceForge as <a class="reference external" href="http://sf.net/projects/shunit2">http://sf.net/projects/shunit2</a>. The
source code is stored in Subversion and can be accessed using the following
information.</p>
<p>Check out the code locally</p>
<pre class="literal-block">
$ svn co https://shunit2.svn.sourceforge.net/svnroot/shunit2/trunk/source/2.1 shunit2
</pre>
<p>Browse the code in a web browser:</p>
<ul class="simple">
<li><a class="reference external" href="http://shunit2.svn.sourceforge.net/viewvc/shunit2/trunk/source/2.1/">http://shunit2.svn.sourceforge.net/viewvc/shunit2/trunk/source/2.1/</a></li>
<li><a class="reference external" href="http://shunit2.svn.sourceforge.net/svnroot/shunit2/trunk/source/2.1/">http://shunit2.svn.sourceforge.net/svnroot/shunit2/trunk/source/2.1/</a></li>
</ul>
</div>
<div class="section" id="making-a-release">
<h1>Making a release</h1>
<p>For these steps, it is assumed we are working with release 2.0.0.</p>
<p>Steps:</p>
<ul class="simple">
<li>write release notes</li>
<li>update version</li>
<li>finish changelog</li>
<li>check all the code in</li>
<li>tag the release</li>
<li>export the release</li>
<li>create tarball</li>
<li>md5sum the tarball and sign with gpg</li>
<li>update website</li>
<li>post to SourceForge and Freshmeat</li>
</ul>
<div class="section" id="write-release-notes">
<h2>Write Release Notes</h2>
<p>This should be pretty self explanatory. Use one of the release notes from a
previous release as an example.</p>
<p>The versions of the various platforms and shells are included when the
master unit test script is run, or when <tt class="docutils literal"><span class="pre">bin/gen_test_results.sh</span></tt> is
used. To determine the versions of the installed shells by hand, use the
<tt class="docutils literal"><span class="pre">lib/versions</span></tt> script.</p>
<p>Alternatively, do the following:</p>
<table border="1" class="docutils">
<colgroup>
<col width="9%" />
<col width="12%" />
<col width="79%" />
</colgroup>
<thead valign="bottom">
<tr><th class="head">Shell</th>
<th class="head">OS</th>
<th class="head">Notes</th>
</tr>
</thead>
<tbody valign="top">
<tr><td>bash</td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">bash</span> <span class="pre">--version</span></tt></td>
</tr>
<tr><td>dash</td>
<td>Linux</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">dpkg</span> <span class="pre">-l</span> <span class="pre">|grep</span> <span class="pre">dash</span></tt></td>
</tr>
<tr><td rowspan="3">ksh</td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">ksh</span> <span class="pre">--version</span></tt>
-or-
<tt class="docutils literal"><span class="pre">$</span> <span class="pre">echo</span> <span class="pre">'echo</span> <span class="pre">$KSH_VERSION'</span> <span class="pre">|ksh</span></tt></td>
</tr>
<tr><td>Cygwin</td>
<td>see pdksh</td>
</tr>
<tr><td>Solaris</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">strings</span> <span class="pre">/usr/bin/ksh</span> <span class="pre">|grep</span> <span class="pre">'Version'</span></tt></td>
</tr>
<tr><td rowspan="2">pdksh</td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">strings</span> <span class="pre">/bin/pdksh</span> <span class="pre">|grep</span> <span class="pre">'PD</span> <span class="pre">KSH'</span></tt></td>
</tr>
<tr><td>Cygwin</td>
<td>look in the downloaded Cygwin directory</td>
</tr>
<tr><td>sh</td>
<td>Solaris</td>
<td>not possible</td>
</tr>
<tr><td>zsh</td>
<td>&nbsp;</td>
<td><tt class="docutils literal"><span class="pre">$</span> <span class="pre">zsh</span> <span class="pre">--version</span></tt></td>
</tr>
</tbody>
</table>
</div>
<div class="section" id="update-version">
<h2>Update Version</h2>
<p>Edit <tt class="docutils literal"><span class="pre">src/shell/shunit2</span></tt> and change the version number in the comment, as well
as in the <tt class="docutils literal"><span class="pre">SHUNIT_VERSION</span></tt> variable.</p>
</div>
<div class="section" id="finish-documentation">
<h2>Finish Documentation</h2>
<p>Make sure that any remaining changes get put into the <tt class="docutils literal"><span class="pre">CHANGES-X.X.txt</span></tt> file.</p>
<p>Finish writing the <tt class="docutils literal"><span class="pre">RELEASE_NOTES-X.X.X.txt</span></tt>. If necessary, run it
through the <strong>fmt</strong> command to make it pretty (hopefully it is already).</p>
<pre class="literal-block">
$ fmt -w 80 RELEASE_NOTES-2.0.0.txt &gt;RELEASE_NOTES-2.0.0.txt.new
$ mv RELEASE_NOTES-2.0.0.txt.new RELEASE_NOTES-2.0.0.txt
</pre>
<p>We want to have an up-to-date version of the documentation in the release, so
we'd better build it.</p>
<pre class="literal-block">
$ pwd
.../shunit2/source/2.1
$ cd doc
$ RST2HTML_OPTS='--stylesheet-path=../share/css/rst2html.css'
$ rst2html ${RST2HTML_OPTS} shunit2.txt &gt;shunit2.html
$ rst2html ${RST2HTML_OPTS} README.txt &gt;README.html
</pre>
</div>
<div class="section" id="check-in-all-the-code">
<h2>Check In All the Code</h2>
<p>This step is pretty self-explanatory</p>
<pre class="literal-block">
$ pwd
.../shunit2/source/2.0
$ svn ci -m &quot;finalizing release&quot;
</pre>
</div>
<div class="section" id="tag-the-release">
<h2>Tag the Release</h2>
<pre class="literal-block">
$ pwd
.../shunit2/source
$ ls
2.0  2.1
$ svn cp -m &quot;Release 2.0.0&quot; 2.0 https://shunit2.googlecode.com/svn/tags/source/2.0.0
</pre>
</div>
<div class="section" id="export-the-release">
<h2>Export the Release</h2>
<pre class="literal-block">
$ pwd
.../shunit2/builds
$ svn export https://shunit2.googlecode.com/svn/tags/source/2.0.0 shunit2-2.0.0
</pre>
</div>
<div class="section" id="create-tarball">
<h2>Create Tarball</h2>
<pre class="literal-block">
$ tar cfz ../releases/shunit2-2.0.0.tgz shunit2-2.0.0
</pre>
</div>
<div class="section" id="md5sum-the-tarball-and-sign-with-gpg">
<h2>md5sum the Tarball and Sign With gpg</h2>
<pre class="literal-block">
$ cd ../releases
$ md5sum shunit2-2.0.0.tgz &gt;shunit2-2.0.0.tgz.md5
$ gpg --default-key kate.ward&#64;forestent.com --detach-sign shunit2-2.0.0.tgz
</pre>
</div>
<div class="section" id="update-website">
<h2>Update Website</h2>
<p>Again, pretty self-explanatory. Make sure to copy the MD5 and GPG signature
files. Once that is done, make sure to tag the website so we can go back in
time if needed.</p>
<pre class="literal-block">
$ pwd
.../shunit2
$ ls
source  website
$ svn cp -m &quot;Release 2.0.0&quot; \
website https://shunit2.googlecode.com/svn/tags/website/20060916
</pre>
<p>Now, update the website. It too is held in Subversion, so <strong>ssh</strong> into the web
server and use <tt class="docutils literal"><span class="pre">svn</span> <span class="pre">up</span></tt> to grab the latest version.</p>
</div>
<div class="section" id="post-to-code-google-com-and-freshmeat">
<h2>Post to code.google.com and Freshmeat</h2>
<ul class="simple">
<li><a class="reference external" href="http://code.google.com/p/shunit2/">http://code.google.com/p/shunit2/</a></li>
<li><a class="reference external" href="http://freshmeat.net/">http://freshmeat.net/</a></li>
</ul>
</div>
</div>
<div class="section" id="related-documentation">
<h1>Related Documentation</h1>
<dl class="docutils">
<dt>Docbook:</dt>
<dd><a class="reference external" href="http://www.docbook.org/">http://www.docbook.org/</a></dd>
<dt>Docbook XML</dt>
<dd><dl class="first last docutils">
<dt>docbook-xml-4.4.zip:</dt>
<dd><a class="reference external" href="http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip">http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip</a>
<a class="reference external" href="http://www.oasis-open.org/docbook/xml/4.4/docbook-xml-4.4.zip">http://www.oasis-open.org/docbook/xml/4.4/docbook-xml-4.4.zip</a></dd>
<dt>docbook-xml-4.5.zip:</dt>
<dd><a class="reference external" href="http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip">http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip</a></dd>
</dl>
</dd>
<dt>Docbook XSL</dt>
<dd><dl class="first last docutils">
<dt>docbook-xsl-1.71.0.tar.bz2:</dt>
<dd><a class="reference external" href="http://prdownloads.sourceforge.net/docbook/docbook-xsl-1.71.0.tar.bz2?download">http://prdownloads.sourceforge.net/docbook/docbook-xsl-1.71.0.tar.bz2?download</a></dd>
<dt>docbook-xsl-1.71.1.tar.bz2:</dt>
<dd><a class="reference external" href="http://downloads.sourceforge.net/docbook/docbook-xsl-1.71.1.tar.bz2?use_mirror=puzzle">http://downloads.sourceforge.net/docbook/docbook-xsl-1.71.1.tar.bz2?use_mirror=puzzle</a></dd>
</dl>
</dd>
<dt>JUnit:</dt>
<dd><a class="reference external" href="http://www.junit.org/">http://www.junit.org/</a></dd>
<dt>reStructuredText:</dt>
<dd><a class="reference external" href="http://docutils.sourceforge.net/docs/user/rst/quickstart.html">http://docutils.sourceforge.net/docs/user/rst/quickstart.html</a></dd>
</dl>
<!-- generate HTML using rst2html from Docutils of -->
<!-- http://docutils.sourceforge.net/ -->
<!--  -->
<!-- vim:fileencoding=latin1:ft=rst:spell:tw=80 -->
<!-- $Revision: 275 $ -->
</div>
</div>
</body>
</html>
